package poc.scc.core;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import poc.scc.core.enums.TipoTermo;

@Entity
@Table(name="aditivo_contrato")
@SequenceGenerator(name="seq", sequenceName="seq_aditivo_contrato")
public class AditivoContrato implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
	private Long id;
	
    private String numero;
    
    @ManyToOne
    @JoinColumn(name="contrato_id")
    private Contrato contrato;
    
    @Enumerated(EnumType.STRING)
    @Column(name="tipo_termo")
    private TipoTermo tipoTermo;
    
    @Column(name="data_termo")
    @Temporal(TemporalType.DATE)
    private Date dataTermo;
    
    @Column(name="data_nova_vigencia")
    @Temporal(TemporalType.DATE)
    private Date dataNovaVigencia;
    
    @Column(name="valor_base")
    private BigDecimal valorBase;
    
    @Column(name="valor_aditivo")
    private BigDecimal valorAditivo;
    
    @Column(name="valor_reajustado")
    private BigDecimal valorReajustado;
    
    @Column(name="percentual_reajuste")
    private BigDecimal percentualReajuste;
    
    @Column(name="fator_reajuste")
    private BigDecimal fatorReajuste;
    
    private String observacao;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public TipoTermo getTipoTermo() {
		return tipoTermo;
	}

	public void setTipoTermo(TipoTermo tipoTermo) {
		this.tipoTermo = tipoTermo;
	}

	public Date getDataTermo() {
		return dataTermo;
	}

	public void setDataTermo(Date dataTermo) {
		this.dataTermo = dataTermo;
	}

	public Date getDataNovaVigencia() {
		return dataNovaVigencia;
	}

	public void setDataNovaVigencia(Date dataNovaVigencia) {
		this.dataNovaVigencia = dataNovaVigencia;
	}

	public BigDecimal getValorBase() {
		return valorBase;
	}

	public void setValorBase(BigDecimal valorBase) {
		this.valorBase = valorBase;
	}

	public BigDecimal getValorAditivo() {
		return valorAditivo;
	}

	public void setValorAditivo(BigDecimal valorAditivo) {
		this.valorAditivo = valorAditivo;
	}

	public BigDecimal getValorReajustado() {
		return valorReajustado;
	}

	public void setValorReajustado(BigDecimal valorReajustado) {
		this.valorReajustado = valorReajustado;
	}

	public BigDecimal getPercentualReajuste() {
		return percentualReajuste;
	}

	public void setPercentualReajuste(BigDecimal percentualReajuste) {
		this.percentualReajuste = percentualReajuste;
	}

	public BigDecimal getFatorReajuste() {
		return fatorReajuste;
	}

	public void setFatorReajuste(BigDecimal fatorReajuste) {
		this.fatorReajuste = fatorReajuste;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

}
